public static LocalTime now(Clock clock) { Objects.requireNonNull(clock, "clock"); final Instant now = clock.instant(); // called once ZoneOffset offset = clock.getZone().getRules().getOffset(now); long localSecond = now.getEpochSecond() + offset.getTotalSeconds(); // overflow caught later int secsOfDay = (int) Math.floorMod(localSecond, SECONDS_PER_DAY); return ofNanoOfDay(secsOfDay * NANOS_PER_SECOND + now.getNano()); }